﻿PropOnline.Resultados = {
    request : null
};

$(function () {

    var busquedaUrl = $('#BusquedaCurrentUrl').attr("value");

    $.address.queryString(busquedaUrl.split('?')[1]);

    $.address.change(executeBusquedaPropiedades);

    // uses live handling, for all elements now and in the future    
    // Fade-in Fade-out    
    $('li.propiedad-item').live("mouseenter mouseleave", function (event) {
        if (event.type == "mouseenter") {
            $(this).css('cursor', 'pointer');
            $(this).animate({ backgroundColor: '#EFEFEF' }, 150);
        } else {
            $(this).animate({ backgroundColor: 'white' }, 150);
        }
    });
    
    // abrir los detalles de propiedad
    $('li.propiedad-item').live('click', function () {
        var propiedadId = $(this).children('#propiedad_Id').attr('value');
        openDetallesPropiedadDialog(propiedadId);
    });   

    // buscar mas propiedades
    $('#more-link').live('click', executeBusquedaMasPropiedades);
});

function executeBusquedaMasPropiedades(event) {
    var params = { CantidadResultados: $('#more-link').attr('rel') }; // TODO: Cambiar para que lo obtenga de una URL

    $('#propiedades-more-loader').show();

    $.ajax({
        url: currentUrl() + '?' + $.address.queryString() + '&' + $.param(params),
        type: "POST",
        complete: function() {
            $('#propiedades-more-loader').hide(); 
        },
        success: function(data) {
            $('#propiedades-more-loader, #more-link-list-item').remove();            
            $('#resultados-propiedades').append(data);                        
        },
        error: errorOnBusquedaPropiedades
    });

    event.preventDefault();
};

function executeBusquedaPropiedades() {

    $('#resultados-propiedades *:not(:first-child)').remove();
    $('#propiedades-full-loader').show();

    if (PropOnline.Resultados.request != null) {
        PropOnline.Resultados.request.abort();
        PropOnline.Resultados.request = null;
    }

    PropOnline.Resultados.request = $.ajax({
        url: currentUrl() + '?' + $.address.queryString(),
        type: 'POST',        
        success: function (data) {
            $('#propiedades-full-loader').hide();
            $('#resultados-propiedades').append(data);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            if (textStatus != 'abort') {
                $('#propiedades-full-loader').hide();
                errorOnBusquedaPropiedades();
            }
        }
    });

    return false;
};

function errorOnBusquedaPropiedades() {
    var errorMessage = '<li class="border-top">' + getErrorMessage('return executeBusquedaPropiedades()') + '</li>';
    $('#resultados-propiedades').append(errorMessage);
};

function loadMap(propiedadId) {
    var mapTab = $('#detallesPropiedad-' + propiedadId).find('#propiedad-' + propiedadId + '-mapa-tab');

    var latitud = mapTab.find('#Latitud').attr('value');
    var longitud = mapTab.find('#Longitud').attr('value');

    var mapSource = baseUrl() + 'mapa/mostrar?latitud=' + encodeURI(latitud) + '&longitud=' + encodeURI(longitud);

    mapTab.find('iframe').attr('src', mapSource);   
};

function openDetallesPropiedadDialog(propiedadId) {

    var propiedadDialog = $('#detallesPropiedad-' + propiedadId);

    if (propiedadDialog.is(':data(dialog)') > 0) {
        propiedadDialog.dialog('open'); 
        return false; 
    }    

    // initialize dialog
    propiedadDialog.dialog({
        height: 500,
        width: 600,
        resizable: false,
        modal: true     
    });

    $.ajax({
        url: baseUrl() + 'Propiedad/Detalles/' + propiedadId,
        type: 'GET',
        success: function (data) {
            propiedadDialog.html(data);
            applyTabWidget(propiedadDialog);
            loadHistoricoPropiedad(propiedadId);
            loadMap(propiedadId);
        },
        error: function () {
            alert(PropOnline.Constants.ErrorDetallesPropiedad);
        }
    });

    return false;
};

function applyTabWidget(propiedadDialog) {       

    var tabs = propiedadDialog.tabs();
    propiedadDialog.find('a.imagen-propiedad-thumbnail-link').click(function () {
        tabs.tabs('select', 2);
        return false;
    });
    propiedadDialog.find('a.zonificacion-propiedad-link').click(function () {
        tabs.tabs('select', 3);
        return false;
    });    
};

function loadHistoricoPropiedad(propiedadId) {
    var historiaPropiedadDiv = $('#detallesPropiedad-' + propiedadId + ' div.historia-propiedad');

    $.ajax({
        url: baseUrl() + 'Propiedad/Historia/' + propiedadId,
        type: "GET",
        success: function (data) {
            historiaPropiedadDiv.empty();
            historiaPropiedadDiv.append(data);
        },
        error: function (xhr, textStatus, thrownError) {
            historiaPropiedadDiv.empty();
            var errorMessage = getErrorMessage('return loadHistoricoPropiedad(' + propiedadId + ')');
            historiaPropiedadDiv.append(errorMessage);
        }
    });

    return false;
};